const BasePlugin = require('./base-plugin');

class AdminPlugin extends BasePlugin {
    constructor() {
        super();
        this.name = '管理插件';
        this.version = '1.0.0';
        this.author = '系统';
        this.priority = 4; // 高优先级
        this.description = '群管理功能';
    }

    /**
     * 群管理员变动
     */
    onGroupAdminChange(event, reply) {
        const action = event.sub_type === 'set' ? '成为管理员' : '不再是管理员';
        reply(`⚡ 群管理变动：@${event.user_id} ${action}`);
        return true;
    }

    /**
     * 群禁言事件
     */
    onGroupBan(event, reply) {
        if (event.sub_type === 'ban') {
            reply(`🔇 @${event.user_id} 被禁言 ${event.duration} 秒`);
        } else {
            reply(`🔊 @${event.user_id} 已被解禁`);
        }
        return true;
    }

    /**
     * 群成员减少
     */
    onGroupMemberDecrease(event, reply) {
        if (event.sub_type === 'kick' && event.operator_id) {
            reply(`👋 @${event.user_id} 被 @${event.operator_id} 移出群聊`);
        } else if (event.sub_type === 'leave') {
            reply(`👋 @${event.user_id} 离开了群聊`);
        } else if (event.sub_type === 'kick_me') {
            reply(`😢 机器人被 @${event.operator_id} 移出群聊`);
        }
        return true;
    }

    /**
     * 群消息撤回
     */
    onGroupRecall(event, reply) {
        reply(`🗑️ @${event.user_id} 撤回了一条消息，操作者：@${event.operator_id}`);
        return true;
    }

    /**
     * 处理管理指令
     */
    onGroupMessage(event, reply) {
        const message = event.raw_message.trim();
        const { group_id, user_id } = event;

        // 检查用户是否有管理权限（这里需要实际实现权限检查）
        const isAdmin = this.checkAdminPermission(group_id, user_id);

        if (message.startsWith('禁言')) {
            if (!isAdmin) {
                reply('❌ 您没有管理权限');
                return true;
            }
            // 解析禁言指令，例如：禁言 @123456 60
            const parts = message.split(' ');
            if (parts.length >= 3) {
                const targetId = parts[1].replace('@', '');
                const duration = parseInt(parts[2]) || 60;
                this.banMember(group_id, targetId, duration, reply);
            } else {
                reply('❌ 用法：禁言 @QQ号 时长(秒)');
            }
            return true;
        }

        if (message.startsWith('解禁')) {
            if (!isAdmin) {
                reply('❌ 您没有管理权限');
                return true;
            }
            const parts = message.split(' ');
            if (parts.length >= 2) {
                const targetId = parts[1].replace('@', '');
                this.banMember(group_id, targetId, 0, reply);
            } else {
                reply('❌ 用法：解禁 @QQ号');
            }
            return true;
        }

        if (message === '全员禁言') {
            if (!isAdmin) {
                reply('❌ 您没有管理权限');
                return true;
            }
            this.setWholeBan(group_id, true, reply);
            return true;
        }

        if (message === '解除全员禁言') {
            if (!isAdmin) {
                reply('❌ 您没有管理权限');
                return true;
            }
            this.setWholeBan(group_id, false, reply);
            return true;
        }

        return false;
    }

    /**
     * 检查用户管理权限（需要实际实现）
     */
    checkAdminPermission(group_id, user_id) {
        // 这里应该实际检查用户是否是群管理员
        // 暂时返回true用于测试
        return true;
    }

    /**
     * 禁言成员
     */
    async banMember(group_id, user_id, duration, reply) {
        try {
            const result = await this.messageSender.setGroupBan(group_id, user_id, duration);
            if (result.success) {
                if (duration > 0) {
                    reply(`✅ 已禁言 @${user_id} ${duration} 秒`);
                } else {
                    reply(`✅ 已解除 @${user_id} 的禁言`);
                }
            } else {
                reply(`❌ 操作失败: ${result.error}`);
            }
        } catch (error) {
            reply(`❌ 操作异常: ${error.message}`);
        }
    }

    /**
     * 设置全员禁言
     */
    async setWholeBan(group_id, enable, reply) {
        try {
            const result = await this.messageSender.setGroupWholeBan(group_id, enable);
            if (result.success) {
                reply(`✅ ${enable ? '已开启全员禁言' : '已解除全员禁言'}`);
            } else {
                reply(`❌ 操作失败: ${result.error}`);
            }
        } catch (error) {
            reply(`❌ 操作异常: ${error.message}`);
        }
    }
}

module.exports = AdminPlugin;